//package com.ruoyi.web.controller.kpl;
//
//import org.apache.http.HttpHost;
//
//import java.io.BufferedReader;
//import java.io.IOException;
//import java.io.InputStreamReader;
//import java.net.*;
//import java.nio.charset.StandardCharsets;
//import java.util.Map;
//import java.util.regex.Matcher;
//import java.util.regex.Pattern;
//
//public class HttpUtils2 {
//
//    /**
//     * 获取代理数据
//     * @param s
//     * @return
//     */
//    public static String getProxyData(String s) {
//        // HTTP 代理
//        System.setProperty("http.proxyHost", "127.0.0.1");
//        System.setProperty("http.proxyPort", "8888");
//
//        // HTTPS 代理
//        System.setProperty("https.proxyHost", "127.0.0.1");
//        System.setProperty("https.proxyPort", "8888");
//
////        final String data = HttpUtils.getByUrlProxy(s);
////        System.out.println(data);
//
//        // 如果需要用户名密码（Basic Auth）
//        // System.setProperty("http.proxyUser", "yourUser");
//        // System.setProperty("http.proxyPassword", "yourPass");
//
//        try {
//            // 之后发出的所有请求都走代理
//            URL url = new URL(s);
//
//            HttpURLConnection conn = (HttpURLConnection) url.openConnection();
//            try (BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream()))) {
//                String data = in.readLine();
//                return unicodeDecode(data);
//            }
//
//        }catch (Exception e) {
//            e.printStackTrace();
//        }
//        return "";
//    }
//
//    public static String unicodeDecode(String string) {
//        Pattern pattern = Pattern.compile("(\\\\u(\\p{XDigit}{4}))");
//        Matcher matcher = pattern.matcher(string);
//        char ch;
//        while (matcher.find()) {
//            ch = (char) Integer.parseInt(matcher.group(2), 16);
//            string = string.replace(matcher.group(1), ch + "");
//        }
//        return string;
//    }
//
//    public static String getByUrlProxy(String url) {
//
//        // HTTP 代理
//        System.setProperty("http.proxyHost", "127.0.0.1");
//        System.setProperty("http.proxyPort", "8888");
//
//        // HTTPS 代理
//        System.setProperty("https.proxyHost", "127.0.0.1");
//        System.setProperty("https.proxyPort", "8888");
//
//        try{
//            HttpHost proxy = new HttpHost("127.0.0.1",8888);
//
//            //HttpClient client = HttpClient.newHttpClient();
//            // 通过Builder配置代理并创建HttpClient
//            HttpClient client = HttpClient.newBuilder()
//                    .proxy(ProxySelector.of(new InetSocketAddress(proxy.getHostName(), proxy.getPort())))
//                    .build();
//
//            HttpRequest request = HttpRequest.newBuilder()
//                    .uri(URI.create(url))
//                    .header("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36")
//                    .header("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8")
//                    .header("Accept-Language", "en-US,en;q=0.5")
//                    .header("Referer", "https://www.example.com/")  // 根据实际情况设置
//
//                    .build();
//            HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
//
//            return response.body();
//        }catch (Exception e){
//            e.printStackTrace();
//            throw new RuntimeException(e);
//        }
//    }
//
//    public static String getByUrl(String url) {
//
//        try{
//            HttpClient client = HttpClient.newHttpClient();
//            HttpRequest request = HttpRequest.newBuilder()
//                    .uri(URI.create(url))
//                    .header("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36")
//                    .header("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8")
//                    .header("Accept-Language", "en-US,en;q=0.5")
//                    .header("Referer", "https://www.example.com/")  // 根据实际情况设置
//                    .build();
//            HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
//
//            return response.body();
//        }catch (Exception e){
//            e.printStackTrace();
//            throw new RuntimeException(e);
//        }
//    }
//
//    public static String getData(String baseUrl, Map<String, Object> params)  {
//        // 2. 构建带参数的完整URL
//        String fullUrl = buildUrlWithParams(baseUrl, params);
//
//
//        // 3. 创建HttpClient实例
//        HttpClient client = HttpClient.newHttpClient();
//
//        // 4. 创建HttpRequest
//        HttpRequest request = HttpRequest.newBuilder()
//                .uri(URI.create(fullUrl))
//                .header("Content-Type", "application/json")
//                .header("User-Agent", "Java HttpClient")
//                .GET() // GET请求
//                .build();
//
//        // 5. 发送请求并获取响应
//        HttpResponse<String> response = null;
//        try {
//            response = client.send(
//                    request,
//                    HttpResponse.BodyHandlers.ofString()
//            );
//        } catch (IOException | InterruptedException e) {
//            throw new RuntimeException(e);
//        }
//
//        // 6. 处理响应
//        int statusCode = response.statusCode();
//        String responseBody = response.body();
//
//
//        // 使用Apache Commons Lang转换
//        return StringEscapeUtils.unescapeJava(responseBody);
//    }
//
//    // 构建带查询参数的URL
//    public static String buildUrlWithParams(String baseUrl, Map<String, Object> params) {
//        if (params == null || params.isEmpty()) {
//            return baseUrl;
//        }
//
//        StringBuilder queryString = new StringBuilder();
//        for (Map.Entry<String, Object> entry : params.entrySet()) {
//            if (!queryString.isEmpty()) {
//                queryString.append("&");
//            }
//            queryString.append(URLEncoder.encode(entry.getKey(), StandardCharsets.UTF_8));
//            queryString.append("=");
//            queryString.append(URLEncoder.encode(entry.getValue().toString(), StandardCharsets.UTF_8));
//        }
//
//        return baseUrl + "?" + queryString;
//    }
//}
